import {
  dataRegexp
} from '../utils/tools'
/** 验证表单
 * @param formItem 所有表单项（验证规则）
 * @param formValue 所有要验证的表单值
 */
export const axFormValidator = async (formItem, formValue) => {
  let noError = true;
  for (const k in formItem) {
    const item = formItem[k];
    const value = formValue[k];
    const status = await axValidator(item, value);
    if (noError) noError = status;
  }
  if (noError)
    return Promise.resolve(true);
  else {
    return Promise.reject(formItem);
  }

}

/** 验证表单项
 * @param item 表单项（验证规则）pattern规则名（'empty','mobile','idcard'等）
 * @param value 要验证的表单值
 */
export const axValidator = async (item, value) => {
  // const val = value && (typeof (value) === 'string' ? value.trim() : value);
  const val = value;
  /** 改变初始值 */
  item.value = val;

  if (item.required) {
    const flag = await dataRegexp(val, 'empty');
    if (flag) {
      item.errorMessage = item.label + '不能为空';
      return false;
    }
  }
  if (item.pattern && val) {
    const flag = await dataRegexp(val, item.pattern);
    if (!flag) {
      item.errorMessage = item.label + '格式不正确';
      return false;
    }
  }
  item.errorMessage = '';

  return true;
  // if (param.pattern && val) {
  //   if (!new RegExp(param.pattern).test(val))
  //     return {
  //       errMsg: param.errMsg + "格式不正确"
  //     };
  // }
  // if (param.maxLength && val) {
  //   if (val.length > param.maxLength)
  //     return {
  //       errMsg: param.errMsg + "字符数不能大于" + param.maxLength + "！"
  //     };
  // }
  // if (param.minLength && val) {
  //   if (val.length < param.minLength)
  //     return {
  //       errMsg: param.errMsg + "字符数不能小于" + param.minLength + "！"
  //     };
  // }
  // if (param.max && val) {
  //   if (parseInt(val) > param.max)
  //     return {
  //       errMsg: param.errMsg + "数值不能大于" + param.max + "！"
  //     };
  // }
  // if (param.min && val) {
  //   if (parseInt(val) < param.min)
  //     return {
  //       errMsg: param.errMsg + "数值不能小于" + param.min + "！"
  //     };
  // }
}